1. Field of the Invention
This invention relates to data storage and retrieval, and, more particularly, to searchable indexes for data stores.
2. Description of the Related Art
The Internet, sometimes called simply “the Net,” is a worldwide system of computer networks in which a client at any one computer may, with permission, obtain information from any other computer. The most widely used part of the Internet is the World Wide Web, often abbreviated “WWW”, which is commonly referred to as “the Web”. The Web may be defined as all the resources (e.g., Web pages and Web sites) and clients on the Internet that use the Hypertext Transfer Protocol (HTTP) or variations thereof to access the resources. A Web site is a related collection of Web files that includes a beginning file called a home page. From the home page, the client may navigate to other Web pages on the Web site. A Web server program is a program that, using the client/server model and HTTP, serves the files that form the Web pages of a Web site to the Web clients, whose computers contain HTTP client programs (e.g., Web browsers) that forward requests and display responses. A Web server program may host one or more Web sites.
Data Storage
Data storage, storing data objects of various types for access by various applications, is a primary area of interest and development in computer systems and applications, networking, the Internet, and related technical areas. Conventionally, developers have either created their own data storage solutions for storing data objects, have leveraged off-the-shelf database products, such as an Oracle® database product or a MySQL® database product, to develop data storage solutions, or have relied on third-party providers for data storage solutions. Oracle® is a registered trademark of Oracle Corporation and/or its affiliates. MySQL® is a registered trademark of MySQL AB. However the data storage solution is provided, data objects may be stored to, and retrieved from, the data store. Typically, a data storage solution provides one or more types of locators that may be used to retrieve data objects from the data store. A common “locator” is a file path-type locator, in which a client provides a file path, including a particular file name, to retrieve a particular data object (e.g., a file) from some location with a data store specified in the file path. File paths are, however, not very flexible, as the desired data object is specifiable only by the path/file name. File path mechanism, and other conventional “locator” mechanisms for retrieving data objects from data stores, typically do not provide the flexibility to retrieve data objects from a data store according to other attributes of the desired data objects. For example, a client may wish to retrieve data objects from the data store according to category, company, type, or any of countless other attributes that may be associated with a data object. Conventional file paths do not provide for such flexible retrieval methods.
There are “one-off” data storage solutions that may provide more flexible mechanisms for querying/retrieving data objects from a data store according to other attributes than just a file path/file name. Conventionally, different developers have tended to solve this same data storage problem for different applications over and over again in ways that do not scale to other problems, are not flexible to address other data storage needs, and/or have based their solutions on “off-the-shelf” technologies such as an Oracle® database product or a MySQL® database product that prove to be expensive in the short- and/or long-term. As the data store grows, these conventional data storage solutions generally require a data store administrator to perform or manage monitoring, partitioning, query optimizations, storage procedures, additions of new hardware, crisis/emergency procedures (e.g., when a storage system goes down), etc. In addition, for these conventional data storage solutions, if a client wants to add new attributes that may be used to query for and retrieve data objects, table schemas have to be changed to support the new attributes.